package com.xml;

import com.alibaba.excel.EasyExcel;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @program: easyexcel
 * @description:
 * @Version V1.0.0
 * @author: dazhi
 * @create: 2020-12-16 13:06
 **/
public class DOM4JTest {
    private static List<Note> noteList = new ArrayList<Note>();
    public static void main(String[] args) {
        //开始解析XML文件
        //创建一个SAXreader的对象
        SAXReader reader = new SAXReader();
        //通过SAXreader对象的read()方法加载XML文件
        try {
            Document document = reader.read(new File("D:\\test\\a.xml"));
            Element bookstore = document.getRootElement();
            Iterator<Element> it = bookstore.elementIterator();
            int i=0;
            while(it.hasNext()){

                Element book = it.next();
                List<Attribute> bookAttrs = book.attributes();
                for (Attribute attribute : bookAttrs) {
                    if(attribute.getName().equals("aod")){
                        System.out.println("属性名：" + attribute.getName() + "------属性值为："+attribute.getValue());
                        Note note=new Note(attribute.getValue());
                        noteList.add(note);
                    }
                }
                i++;

            }
            System.out.println("粗粒条数：" +i);

            String excelFileName = "D:\\test\\excel.xlsx";


            List<String> aodList = noteList.stream().map(a -> a.getAod()).collect(Collectors.toList());
        /*
            参数解释：
                fileName：磁盘保存路径 + 文件名带后缀
                bean.class：指定写用哪个class去写，然后写到第一个sheet，名字为模板 然后文件流会自动关闭。如果这里想使用03 则 传入excelType参数即可
                data()：封装返回List<bean>的具体逻辑，一个对象是一行
         */
            EasyExcel.write(excelFileName, Note.class).sheet(3,"模板").doWrite(noteList); // 所谓的链式编程, 哦哈哈~！

        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}
